import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 67, 67]]
index = ['张三', '李四', '王五']
columns = ['数学', '语文', '英语']

pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)

"""
1、提取行数据
"""
# 提取行数据
print(df.loc['张三'])  # 行索引名称
print(df.iloc[0])  # 行索引编号

# 提取多行数据
print(df.loc[['张三', '王五']])
print(df.iloc[[0, 2]])

# 提取连续的多行数据
print(df.loc['张三':'王五'])  # 行索引名称，包头包尾
print(df.iloc[0:2])  # 行索引编号，包头不包尾
print(df.iloc[1::])  # (start: stop: step)

"""
2、提取列数据
"""
# 提取列数据
print(df[['数学', '英语']])  # 使用列名提取
print(df.loc[:, ['数学', '英语']])  # ','左侧表示行，右侧表示列
print(df.iloc[:, [0, 2]])  # 使用列序号

# 提取连续的列
print(df.loc[:, '语文':])
print(df.iloc[:, 1:])

"""
3、提取区域数据
"""
# 提取区域数据
print(df.loc[['张三', '王五'], ['数学', '语文']])
print(df.iloc[[0, 2], 0:2]) # ','左侧表示行，右侧表示列 -- 连续时用:  不连续时用[]

print(df.iloc[:,0]) # 所有行的第一列数据

"""
4、提取指定条件的数据
"""
print(df.loc[df['语文'] > 60]) # 提取语文大于60的数据

print(df.loc[(df['语文'] > 60) & (df['数学'] > 60)]) # 提取语文和数学都大于60的数据

